1. Statement of the Technical Field
The present invention relates to field of software development and more particularly to the model driven development of a software application.
2. Description of the Related Art
Modern software systems have become increasingly pervasive and open-ended, and are expected to deliver critical computing services in a dependable manner across multiple, heterogeneous computing environments. To better manage the complexity of developing modern software systems, software development strategies can be employed which raise the level of abstraction at which software systems are conceived, implemented and evolved. Model-driven development (MDD) represents one such software development strategy in which models are the primary artifacts of software development.
Modeling complex applications has several general benefits which can include a better understanding of the business or engineering situation at hand, the construction and design of application architectures, and the creation of visualizations of code and other forms of implementation. In this regard, the essence of modeling is abstraction and any visualization of code is indeed an abstraction in that application information can be selectively exposed while details deemed unnecessary or unwanted can be suppressed. In conventional MDD, visual models can be created utilizing model constructs or model types.
At the core of contemporary visual modeling, an object-oriented model can include several classes having both data and method members. The classes can be inter-related to one another and the relationship between different classes can be reflected visually in the model as it will be understood by the skilled artisan. Thus, to provide a high degree of visualization, object-oriented modeling tools can lay out model elements in diagrams so the reader can visually conceive the overall design of the software application.
The modeling of a class and its contained members plays a key role in the visualization of an associated software model. A member of a class, by definition, is contained by the class itself. Naturally, the object-oriented model can visually represent a member as an entity inside a visually discernible shape which represents its owner class. The member itself can have a type attribute. That is, a member itself is an entity of a certain type which also is represented as a class. In this regard, the class that represents the type often is referred to as a “typing class”, to be distinguished from the owner class containing the member.
Referring to FIGS. 1A and 1B, the type of a class member 120 often is represented textually within the visual representation of the class 110. Alternatively, the type of a class member 120 can be represented graphically. In particular, where the typing class 130 of a class member 120 is represented graphically, a visual linkage 140 between the typing class 130 and the class 110 containing the member 120 can be visually rendered. This latter form of representation can be most convenient for visualizing an object-oriented model. Yet, where many members of many classes have many multiple typing classes, visually representing each typing class in the visual model result in a cluttered visual model. A cluttered visual model, in turn, can defeat the intent of the visual model—to provide a clear visualization of a model.